/*
 * AC
 * DP
 **/
#include <stdio.h>

#define max(a, b) ((a) > (b) ? (a) : (b))
int get_sum(int i, int j);

int T[100][100][2];
int n;

int main(int argc, char **argv)
{
	int i, j;
	scanf("%d", &n);
	for (i = 0; i < n; i++) {
		for (j = 0; j <= i; j++) {
			scanf("%d", &T[i][j][0]);
		}
	}
	printf("%d\n", get_sum(0, 0));
	return 0;
}

int get_sum(int i, int j)
{
	if (i + 1 >= n) {
		T[i][j][1] = T[i][j][0];
		return T[i][j][1];
	}
	if (T[i + 1][j][1] && T[i + 1][j + 1][1]) {
		T[i][j][1] = max(T[i + 1][j][1] + T[i][j][0], T[i + 1][j + 1][1] + T[i][j][0]);
	}
	if (T[i + 1][j][1] && !T[i + 1][j + 1][1])
		T[i][j][1] = max(T[i + 1][j][1] + T[i][j][0], get_sum(i + 1, j + 1) + T[i][j][0]);
	if (!T[i + 1][j][1] && T[i + 1][j + 1][1])
		T[i][j][1] = max(get_sum(i + 1, j) + T[i][j][0], T[i + 1][j + 1][1] + T[i][j][0]);
	if (!T[i + 1][j][1] && !T[i + 1][j + 1][1])
		T[i][j][1] = max(get_sum(i + 1, j) + T[i][j][0], get_sum(i + 1, j + 1) + T[i][j][0]);
	return T[i][j][1];
}
